deltas: Don't put unreadable *from* objects in fallback
authorColin Walters <walters@verbum.org>
Fri, 10 Feb 2017 21:05:17 +0000 (16:05 -0500)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 17 Feb 2017 14:58:25 +0000 (14:58 +0000)
In https://github.com/ostreedev/ostree/pull/634 we introduced
a subtle regression - the unreadable object was added to the *new*
reachable objects, when it shouldn't have been.  Because it
was a *from* object, clients already had it.

This became more obvious now that I'm working on fixing delta
progress - I noticed my deltas were always starting out with 40MB
fetched, which turned out to be a non-world-readable initramfs object.

This code should simply *skip* the unreadable object, and the delta processing
below properly iterates over "new objects", so we'll pick it up from there.

Closes: #678
Approved by: giuseppe

src/libostree/ostree-repo-static-delta-compilation.c

index 657e8676e1f3a0d4be968a05b1aa2602f99de662..47fae9f59a63ea1b554864775ff270d920167204 100644 (file)
@@ -1003,11 +1003,7 @@ generate_delta_lowlatency (OstreeRepo                       *repo,
       if (!check_object_world_readable (repo, from_checksum, &from_world_readable, cancellable, error))
         goto out;
       if (!from_world_readable)
-        {
-          g_hash_table_iter_steal (&hashiter);
-          g_hash_table_add (new_reachable_regfile_content, (char*)from_checksum);
-          continue;
-        }
+        continue;
 
       if (!try_content_rollsum (repo, opts, from_checksum, to_checksum,
                                 &rollsum, cancellable, error))